﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Data;
using Tipler.Siniflar;
using Tipler.DataSetler;
using DataServis;
using Tipler.Enumlar;

namespace IsKurallari.Yetki
{
    public class YetkiIsKurali : TemelIsKurali
    {
        #region Kısayol İşlemleri

        public FonksiyonSonuc<KullaniciKisayolDataSet> KullaniciKisayollariGetir(int KullaniciID)
        {
            FonksiyonSonuc<KullaniciKisayolDataSet> sonuc = new FonksiyonSonuc<KullaniciKisayolDataSet>();
            KullaniciKisayolDataSet ds = new KullaniciKisayolDataSet();

            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));

                StringBuilder sb = new StringBuilder();
                sb.Append("SELECT   KK.KullaniciID, KK.MenuID, M.MenuAdi, M.Uzanti, M.KisayolResim ");
                sb.Append("FROM     KullaniciKisayol KK INNER JOIN Menu M ON M.MenuID = KK.MenuID ");
                sb.Append("WHERE    KK.KullaniciID = " + PrmSgn + "KullaniciID ");
                sb.Append("         AND M.Uzanti NOT LIKE '%#%'");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kısayol sayfaları okunamadı.";
                sonuc.HataKod = "80011";
            }

            return sonuc;
        }


        public FonksiyonSonuc<KullaniciKisayolDataSet> KullaniciKisayolOlabilecekSayfalariGetir(int KullaniciID)
        {
            FonksiyonSonuc<KullaniciKisayolDataSet> sonuc = new FonksiyonSonuc<KullaniciKisayolDataSet>();
            KullaniciKisayolDataSet ds = new KullaniciKisayolDataSet();

            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));

                StringBuilder sb = new StringBuilder();
                sb.Append("SELECT   " + PrmSgn + "KullaniciID as KullaniciID, M.MenuID, M.MenuAdi, M.Uzanti, M.KisayolResim ");
                sb.Append("FROM     Menu M ");
                sb.Append("WHERE    M.MenuID IN (SELECT GM.MenuID FROM GrupMenu GM WHERE GM.GrupID IN (SELECT KG.GrupID FROM KullaniciGrup KG WHERE KG.KullaniciID = " + PrmSgn + "KullaniciID) ");
                sb.Append("                      UNION SELECT KM.MenuID FROM KullaniciMenu KM WHERE KM.KullaniciID = " + PrmSgn + "KullaniciID) ");
                sb.Append("         AND M.MenuID NOT IN (SELECT KK.MenuID FROM KullaniciKisayol KK WHERE KK.KullaniciID = @KullaniciID) ");
                sb.Append("         AND m.Uzanti NOT LIKE '%#%'");
                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kısayol sayfaları okunamadı.";
                sonuc.HataKod = "80011";
            }

            return sonuc;
        }


        public FonksiyonSonuc<bool> KullaniciKisayollarKaydet(KullaniciKisayolDataSet dsKullaniciKisayol)
        {
            FonksiyonSonuc<bool> Sonuc = new FonksiyonSonuc<bool>();

            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsKullaniciKisayol);

                Sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                Sonuc.Sonuc = false;
                Sonuc.Ex = ex;
                Sonuc.Hata = "Kısayollarınız kaydedilemedi.";
            }

            return Sonuc;
        }

        #endregion

        #region Kullanıcı İşlemleri

        public FonksiyonSonuc<KullaniciDataSet> KullaniciGetir(int KullaniciID, string KullaniciAdi, int AktifPasif, int GrupID)
        {
            FonksiyonSonuc<KullaniciDataSet> sonuc = new FonksiyonSonuc<KullaniciDataSet>();
            KullaniciDataSet ds = new KullaniciDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> pParams = new List<IDbDataParameter>();

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT Kullanici.* ");
                sb.Append(" FROM Kullanici  ");
                sb.Append(" WHERE 1=1 ");

                if (KullaniciID != -1)
                {
                    sb.Append(" AND Kullanici.KullaniciID=" + PrmSgn + "KullaniciID ");
                    pParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));
                }
                if (KullaniciAdi != "")
                {
                    KullaniciAdi = "%" + KullaniciAdi + "%";
                    sb.Append(" AND Kullanici.KullaniciAdi LIKE " + PrmSgn + "KullaniciAdi ");
                    pParams.Add(oVeriKatmani.CreateParameter("KullaniciAdi", DbType.String, KullaniciAdi));
                }
                if (AktifPasif != -1)
                {
                    sb.Append(" AND Kullanici.DURUM=" + PrmSgn + "AKTIFMI ");
                    pParams.Add(oVeriKatmani.CreateParameter("AKTIFMI", DbType.Int32, AktifPasif));
                }
                if (GrupID != -1)
                {
                    sb.Append(" AND Kullanici.KullaniciID IN (SELECT KullaniciID FROM KullaniciGrup WHERE GrupID=" + PrmSgn + "GrupID) ");
                    pParams.Add(oVeriKatmani.CreateParameter("GrupID", DbType.Int32, GrupID));
                }

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Kullanici.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullaniciDataSet> KullaniciGetirbyKullaniciID(int KullaniciID)
        {
            FonksiyonSonuc<KullaniciDataSet> sonuc = new FonksiyonSonuc<KullaniciDataSet>();
            KullaniciDataSet ds = new KullaniciDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT Kullanici.* ");
                sb.Append(" FROM Kullanici  ");
                sb.Append(" WHERE Kullanici.KullaniciID=" + PrmSgn + "KullaniciID ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Kullanici.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }



        public FonksiyonSonuc<KullaniciYetkiliBolgeDataSet> KullaniciYetkiliBolgeGetirbyKullaniciID(int KullaniciID)
        {
            FonksiyonSonuc<KullaniciYetkiliBolgeDataSet> sonuc = new FonksiyonSonuc<KullaniciYetkiliBolgeDataSet>();
            KullaniciYetkiliBolgeDataSet ds = new KullaniciYetkiliBolgeDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT * ");
                sb.Append(" FROM KullaniciYetkiliBolge  ");
                sb.Append(" WHERE KullaniciID=" + PrmSgn + "KullaniciID ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.KullaniciYetkiliBolge.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullaniciDataSet> KullaniciGetirbyKullaniciTurID(int KullaniciTurID)
        {
            FonksiyonSonuc<KullaniciDataSet> sonuc = new FonksiyonSonuc<KullaniciDataSet>();
            KullaniciDataSet ds = new KullaniciDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("KullaniciTurID", DbType.Int32, KullaniciTurID));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT Kullanici.* ");
                sb.Append(" FROM Kullanici  ");
                sb.Append(" WHERE Kullanici.KullaniciTurID=" + PrmSgn + "KullaniciTurID ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Kullanici.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullaniciDataSet> KullaniciGetirbyActivationKey(string ActivationKey)
        {
            FonksiyonSonuc<KullaniciDataSet> sonuc = new FonksiyonSonuc<KullaniciDataSet>();
            KullaniciDataSet ds = new KullaniciDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("ActivationKey", DbType.String, ActivationKey));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT Kullanici.* ");
                sb.Append(" FROM Kullanici  ");
                sb.Append(" WHERE Kullanici.ActivationKey=" + PrmSgn + "ActivationKey ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Kullanici.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullaniciDataSet> KullaniciSorgula(string Adi, string Soyadi, string KullaniciAdi, int AktifPasif, int KullaniciTur, int IlID, int IlceID, int LisansSahibiKullaniciID)
        {
            FonksiyonSonuc<KullaniciDataSet> sonuc = new FonksiyonSonuc<KullaniciDataSet>();
            KullaniciDataSet ds = new KullaniciDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> pParams = new List<IDbDataParameter>();

                StringBuilder sb = new StringBuilder();

                sb.Append(" SELECT K.*,K.Adi" + Concat + "' '" + Concat + "K.Soyadi ADSOYAD,");

                sb.Append(" stuff((SELECT ', ' + IlAdi+'-'+IlceAdi ");
                sb.Append("		   FROM KullaniciYetkiliBolge ");
                sb.Append("                 INNER JOIN IlPrm ON KullaniciYetkiliBolge.IlID = IlPrm.IlID ");
                sb.Append("                 INNER JOIN IlcePrm ON KullaniciYetkiliBolge.IlceID = IlcePrm.IlceID ");
                sb.Append("			   WHERE KullaniciYetkiliBolge.KullaniciID = K.KullaniciID ");
                sb.Append("			   FOR XML PATH ('')), 1, 1, '') AS YetkiliBirim, ");
                sb.Append(" stuff((SELECT ', ' + GrupAdi ");
                sb.Append("			   FROM Grup ");
                sb.Append("                 INNER JOIN KullaniciGrup ON KullaniciGrup.GrupID = Grup.GrupID ");
                sb.Append("			   WHERE KullaniciGrup.KullaniciID = K.KullaniciID ");
                sb.Append("			   ORDER BY GrupAdi ");
                sb.Append("			   FOR XML PATH ('')), 1, 1, '') AS GrupAdi ");
                sb.Append(" FROM Kullanici K ");
                sb.Append(" WHERE 1=1 ");

                if (Adi != "")
                {
                    Adi = "%" + Adi + "%";
                    sb.Append(" AND K.Adi LIKE " + PrmSgn + "Adi ");
                    pParams.Add(oVeriKatmani.CreateParameter("Adi", DbType.String, Adi));
                }
                if (Soyadi != "")
                {
                    Soyadi = "%" + Soyadi + "%";
                    sb.Append(" AND K.Soyadi LIKE " + PrmSgn + "Soyadi ");
                    pParams.Add(oVeriKatmani.CreateParameter("Soyadi", DbType.String, Soyadi));
                }
                if (KullaniciAdi != "")
                {
                    KullaniciAdi = "%" + KullaniciAdi + "%";
                    sb.Append(" AND K.KullaniciAdi LIKE " + PrmSgn + "KullaniciAdi ");
                    pParams.Add(oVeriKatmani.CreateParameter("KullaniciAdi", DbType.String, KullaniciAdi));
                }
                if (AktifPasif != -1)
                {
                    sb.Append(" AND K.Durum=" + PrmSgn + "AKTIFMI ");
                    pParams.Add(oVeriKatmani.CreateParameter("AKTIFMI", DbType.Int32, AktifPasif));
                }
                if (KullaniciTur != -1)
                {
                    sb.Append(" AND K.KullaniciTurID=" + PrmSgn + "KullaniciTurID ");
                    pParams.Add(oVeriKatmani.CreateParameter("KullaniciTurID", DbType.Int32, KullaniciTur));
                }
                if (IlID != -1 || IlceID != -1)
                {
                    sb.Append(" AND K.KullaniciID IN (SELECT Y.KullaniciID FROM KullaniciYetkiliBolge Y WHERE Y.KullaniciID = K.KullaniciID AND Y.IlID =" + PrmSgn + "IlID ");
                    pParams.Add(oVeriKatmani.CreateParameter("IlID", DbType.Int32, IlID));

                    if (IlceID != -1)
                    {
                        sb.Append(" AND Y.IlceID=" + PrmSgn + "IlceID ");
                        pParams.Add(oVeriKatmani.CreateParameter("IlceID", DbType.Int32, IlceID));
                    }

                    sb.Append(" ) ");
                }
                if (LisansSahibiKullaniciID != -1)
                {
                    sb.Append(" AND (K.LisansSahibiKullaniciID=" + PrmSgn + "LisansSahibiKullaniciID OR K.KullaniciID=" + PrmSgn + "LisansSahibiKullaniciID ) ");
                    pParams.Add(oVeriKatmani.CreateParameter("LisansSahibiKullaniciID", DbType.Int32, LisansSahibiKullaniciID));
                }

                sb.Append(" ORDER BY  ADSOYAD  ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Tables[0].TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullaniciDataSet> KullaniciKaydet(KullaniciDataSet dsKullanici, KullaniciGrupDataSet dsKullaniciGrup, KullaniciYetkiliBolgeDataSet dsYetkiliBirim)
        {
            FonksiyonSonuc<KullaniciDataSet> Sonuc = new FonksiyonSonuc<KullaniciDataSet>();
            VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir(true);
            try
            {
                if (dsKullanici != null)
                    oVeriKatmani.TopluVeriIslemeIDDondur(dsKullanici);
                if (dsKullaniciGrup != null)
                {
                    foreach (KullaniciGrupDataSet.KullaniciGrupRow dr in dsKullaniciGrup.KullaniciGrup.Rows)
                    {
                        if (dr.RowState == DataRowState.Added)
                            dr.KullaniciID = Convert.ToInt32(dsKullanici.Kullanici.Rows[dsKullanici.Kullanici.Count - 1]["KullaniciID"].ToString());
                    }

                    oVeriKatmani.TopluVeriIsleme(dsKullaniciGrup);
                }
                if (dsYetkiliBirim != null)
                {
                    foreach (KullaniciYetkiliBolgeDataSet.KullaniciYetkiliBolgeRow dr in dsYetkiliBirim.KullaniciYetkiliBolge.Rows)
                    {
                        if (dr.RowState == DataRowState.Added)
                            dr.KullaniciID = Convert.ToInt32(dsKullanici.Kullanici.Rows[dsKullanici.Kullanici.Count - 1]["KullaniciID"].ToString());
                    }

                    oVeriKatmani.TopluVeriIsleme(dsYetkiliBirim);
                }

                oVeriKatmani.TransactionBitir();
                Sonuc.Sonuc = dsKullanici;
            }
            catch (Exception ex)
            {
                oVeriKatmani.TransactionGeriAl();
                Sonuc.Sonuc = null;
                Sonuc.ExMesaji = ex.Message;
                Sonuc.Hata = dsKullanici.Kullanici.TableName + " kaydedilemedi.";
                if (ex.Message.Contains("Violation of PRIMARY KEY constraint"))
                    Sonuc.HataKod = "1";
                else
                    Sonuc.HataKod = "70001";
            }
            return Sonuc;
        }
        //@author tolga 
        public FonksiyonSonuc<Boolean> KullaniciOdemeKaydet(KullaniciDataSet dsKullanici, KullancıOdemeDataSet dsKullaniciOdeme)
        {
            FonksiyonSonuc<Boolean> Sonuc = new FonksiyonSonuc<Boolean>();
            VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir(true);

            try
            {
                if (dsKullanici != null)
                    oVeriKatmani.TopluVeriIsleme(dsKullanici);
                if (dsKullaniciOdeme != null)
                    oVeriKatmani.TopluVeriIsleme(dsKullaniciOdeme);

                oVeriKatmani.TransactionBitir();
                Sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                oVeriKatmani.TransactionGeriAl();
                Sonuc.Sonuc = false;
                Sonuc.ExMesaji = ex.Message;
                Sonuc.Hata = dsKullaniciOdeme.KullancıOdeme.TableName + " kaydedilemedi.";
            }
            return Sonuc;
        }

        public FonksiyonSonuc<bool> KullaniciSil(int KullaniciID)
        {
            FonksiyonSonuc<bool> Sonuc = new FonksiyonSonuc<bool>();
            VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir(true);
            try
            {
                FonksiyonSonuc<KullaniciDataSet> oSonucKullanici = KullaniciGetirbyKullaniciID(KullaniciID);
                KullaniciDataSet dsKullanici = oSonucKullanici.Sonuc;
                KullaniciDataSet.KullaniciRow drKullanici = dsKullanici.Kullanici.FindByKullaniciID(KullaniciID);

                FonksiyonSonuc<KullaniciGrupDataSet> oSonucGrup = KullaniciGrupYetkilileriGetir(KullaniciID);
                KullaniciGrupDataSet dsKullaniciGrup = oSonucGrup.Sonuc;
                foreach (KullaniciGrupDataSet.KullaniciGrupRow drGrup in dsKullaniciGrup.KullaniciGrup.Rows)
                {
                    drGrup.Delete();
                }
                oVeriKatmani.TopluVeriIsleme(dsKullaniciGrup);

                FonksiyonSonuc<KullaniciYetkiliBolgeDataSet> oSonucBolge = KullaniciYetkiliBolgeGetirbyKullaniciID(KullaniciID);
                KullaniciYetkiliBolgeDataSet dsYetkiliBolge = oSonucBolge.Sonuc;
                foreach (KullaniciYetkiliBolgeDataSet.KullaniciYetkiliBolgeRow drYetkiliBolge in dsYetkiliBolge.KullaniciYetkiliBolge.Rows)
                {
                    drYetkiliBolge.Delete();
                }
                drKullanici.Durum = Convert.ToByte(EnumAktifPasif.Pasif.GetHashCode());
                oVeriKatmani.TopluVeriIsleme(dsYetkiliBolge);

                //drKullanici.Delete();
                drKullanici.AcceptChanges();
                oVeriKatmani.TopluVeriIsleme(dsKullanici);

                oVeriKatmani.TransactionBitir();
                Sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                oVeriKatmani.TransactionGeriAl();
                Sonuc.Sonuc = false;
                Sonuc.ExMesaji = ex.Message;
                Sonuc.Hata = "Kullanıcı Silinemedi";
                Sonuc.HataKod = "70001";
            }
            return Sonuc;
        }

        public FonksiyonSonuc<KullaniciYetkiDataSet> KullaniciYetkiGetir(int KullaniciID)
        {
            FonksiyonSonuc<KullaniciYetkiDataSet> sonuc = new FonksiyonSonuc<KullaniciYetkiDataSet>();
            KullaniciYetkiDataSet ds = new KullaniciYetkiDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();

                pParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));

                oVeriKatmani.VeriGetir(ds, "SELECT * FROM KullaniciYetki WHERE KullaniciID = " + PrmSgn + "KullaniciID", pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.KullaniciYetki.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<bool> KullaniciYetkiKaydet(KullaniciYetkiDataSet dsKullaniciYetki)
        {
            FonksiyonSonuc<Boolean> Sonuc = new FonksiyonSonuc<Boolean>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsKullaniciYetki);
                Sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                Sonuc.Sonuc = false;
                Sonuc.ExMesaji = ex.Message;
                Sonuc.Hata = dsKullaniciYetki.KullaniciYetki.TableName + " kaydedilemedi.";
                Sonuc.HataKod = "70001";
            }
            return Sonuc;
        }

        public FonksiyonSonuc<KullaniciMenuDataSet> KullaniciMenuGetir(int KullaniciID)
        {
            FonksiyonSonuc<KullaniciMenuDataSet> sonuc = new FonksiyonSonuc<KullaniciMenuDataSet>();
            KullaniciMenuDataSet ds = new KullaniciMenuDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();

                pParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));

                oVeriKatmani.VeriGetir(ds, "SELECT * FROM KullaniciMenu WHERE KullaniciID = " + PrmSgn + "KullaniciID", pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.KullaniciMenu.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<bool> KullaniciMenuKaydet(KullaniciMenuDataSet dsKullaniciMenu)
        {
            FonksiyonSonuc<Boolean> Sonuc = new FonksiyonSonuc<Boolean>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsKullaniciMenu);
                Sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                Sonuc.Sonuc = false;
                Sonuc.ExMesaji = ex.Message;
                Sonuc.Hata = dsKullaniciMenu.KullaniciMenu.TableName + " kaydedilemedi.";
                Sonuc.HataKod = "70001";
            }
            return Sonuc;
        }

        #endregion

        #region Yetki İşlemleri

        public FonksiyonSonuc<YetkiDataSet> YetkiGetir()
        {
            FonksiyonSonuc<YetkiDataSet> sonuc = new FonksiyonSonuc<YetkiDataSet>();
            YetkiDataSet ds = new YetkiDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.VeriGetir(ds, " SELECT * FROM Yetki WHERE Silindi=0 ");
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Yetki.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<YetkiDataSet> YetkiGetirKriterli(string YetkiAdi)
        {
            FonksiyonSonuc<YetkiDataSet> sonuc = new FonksiyonSonuc<YetkiDataSet>();
            YetkiDataSet ds = new YetkiDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> pParams = new List<IDbDataParameter>();

                StringBuilder sbSQL = new StringBuilder();
                sbSQL.Append(" SELECT * FROM Yetki WHERE Silindi=0 ");

                if (YetkiAdi != "")
                {
                    sbSQL.Append(" AND YetkiADI like " + PrmSgn + "YetkiADI ");
                    pParams.Add(oVeriKatmani.CreateParameter("YetkiADI", DbType.String, "%" + YetkiAdi + "%"));
                }

                oVeriKatmani.VeriGetir(ds, sbSQL.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Yetki.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<YetkiDataSet> YetkiGetirByMenuID(int MenuID)
        {
            FonksiyonSonuc<YetkiDataSet> sonuc = new FonksiyonSonuc<YetkiDataSet>();
            YetkiDataSet ds = new YetkiDataSet();


            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("MenuID", DbType.Int32, MenuID));

                oVeriKatmani.VeriGetir(ds, "SELECT * FROM Yetki WHERE Silindi=0 AND MenuID=" + PrmSgn + "MenuID", pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Yetki.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<bool> YetkiKaydet(YetkiDataSet dsYetki)
        {
            FonksiyonSonuc<Boolean> Sonuc = new FonksiyonSonuc<Boolean>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsYetki);
                Sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                Sonuc.Sonuc = false;
                Sonuc.ExMesaji = ex.Message;
                Sonuc.Hata = dsYetki.Yetki.TableName + " kaydedilemedi.";
                Sonuc.HataKod = "70001";
            }
            return Sonuc;
        }

        #endregion

        #region Menu İşlemleri

        public FonksiyonSonuc<MenuDataSet> MenuGetir()
        {
            FonksiyonSonuc<MenuDataSet> sonuc = new FonksiyonSonuc<MenuDataSet>();
            MenuDataSet ds = new MenuDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> pParams = new List<IDbDataParameter>();

                pParams.Add(oVeriKatmani.CreateParameter("Silindi", DbType.Boolean, false));

                oVeriKatmani.VeriGetir(ds, "SELECT * FROM Menu WHERE Silindi=" + PrmSgn + "Silindi", pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Menu.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<MenuDataSet> MenuGetirKriterli(string MenuAdi)
        {
            FonksiyonSonuc<MenuDataSet> sonuc = new FonksiyonSonuc<MenuDataSet>();
            MenuDataSet ds = new MenuDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("Silindi", DbType.Boolean, false));

                StringBuilder sbSQL = new StringBuilder();
                sbSQL.Append(" SELECT * FROM Menu WHERE Silindi=" + PrmSgn + "Silindi ");

                if (MenuAdi != "")
                {
                    sbSQL.Append(" AND MenuAdi like " + PrmSgn + "MenuAdi ");
                    pParams.Add(oVeriKatmani.CreateParameter("MenuAdi", DbType.String, "%" + MenuAdi + "%"));
                }

                oVeriKatmani.VeriGetir(ds, sbSQL.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Menu.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<MenuDataSet> MenuGetirByMenuID(int MenuID)
        {
            FonksiyonSonuc<MenuDataSet> sonuc = new FonksiyonSonuc<MenuDataSet>();
            MenuDataSet ds = new MenuDataSet();

            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("MenuID", DbType.Int32, MenuID));

                oVeriKatmani.VeriGetir(ds, "SELECT * FROM Menu WHERE MenuID=" + PrmSgn + "MenuID", pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Menu.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<bool> MenuKaydet(MenuDataSet dsMenu)
        {
            FonksiyonSonuc<Boolean> Sonuc = new FonksiyonSonuc<Boolean>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsMenu);
                Sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                Sonuc.Sonuc = false;
                Sonuc.ExMesaji = ex.Message;
                Sonuc.Hata = dsMenu.Menu.TableName + " kaydedilemedi.";
                Sonuc.HataKod = "70001";
            }
            return Sonuc;
        }

        #endregion

        #region Grup İşlemleri

        public FonksiyonSonuc<GrupDataSet> GrupGetir()
        {
            FonksiyonSonuc<GrupDataSet> sonuc = new FonksiyonSonuc<GrupDataSet>();
            GrupDataSet ds = new GrupDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.VeriGetir(ds, "SELECT * FROM Grup ORDER BY GrupID");
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Grup.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<GrupDataSet> GrupGetirKriterli(string GrupAdi)
        {
            FonksiyonSonuc<GrupDataSet> sonuc = new FonksiyonSonuc<GrupDataSet>();
            GrupDataSet ds = new GrupDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> pParams = new List<IDbDataParameter>();

                StringBuilder sbSQL = new StringBuilder();
                sbSQL.Append(" SELECT * FROM Grup WHERE 1=1 ");

                if (GrupAdi != "")
                {
                    sbSQL.Append(" AND GrupAdi like " + PrmSgn + "GrupAdi ");
                    pParams.Add(oVeriKatmani.CreateParameter("GrupAdi", DbType.String, "%" + GrupAdi + "%"));
                }

                sbSQL.Append(" ORDER BY GrupID ");

                oVeriKatmani.VeriGetir(ds, sbSQL.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Grup.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<bool> GrupKaydet(GrupDataSet dsGrup)
        {
            FonksiyonSonuc<Boolean> Sonuc = new FonksiyonSonuc<Boolean>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsGrup);
                Sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                Sonuc.Sonuc = false;
                Sonuc.ExMesaji = ex.Message;
                Sonuc.Hata = dsGrup.Grup.TableName + " kaydedilemedi.";
                Sonuc.HataKod = "70001";
            }
            return Sonuc;
        }

        public FonksiyonSonuc<GrupYetkiDataSet> GrupYetkiGetir(int GrupID)
        {
            FonksiyonSonuc<GrupYetkiDataSet> sonuc = new FonksiyonSonuc<GrupYetkiDataSet>();
            GrupYetkiDataSet ds = new GrupYetkiDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();

                pParams.Add(oVeriKatmani.CreateParameter("GrupID", DbType.Int32, GrupID));

                oVeriKatmani.VeriGetir(ds, "SELECT * FROM GrupYetki WHERE GrupID = " + PrmSgn + "GrupID", pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.GrupYetki.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<bool> GrupYetkiKaydet(GrupYetkiDataSet dsGrupYetki)
        {
            FonksiyonSonuc<Boolean> Sonuc = new FonksiyonSonuc<Boolean>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsGrupYetki);
                Sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                Sonuc.Sonuc = false;
                Sonuc.ExMesaji = ex.Message;
                Sonuc.Hata = dsGrupYetki.GrupYetki.TableName + " kaydedilemedi.";
                Sonuc.HataKod = "70001";
            }
            return Sonuc;
        }

        public FonksiyonSonuc<GrupMenuDataSet> GrupMenuGetir(int GrupID)
        {
            FonksiyonSonuc<GrupMenuDataSet> sonuc = new FonksiyonSonuc<GrupMenuDataSet>();
            GrupMenuDataSet ds = new GrupMenuDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();

                pParams.Add(oVeriKatmani.CreateParameter("GrupID", DbType.Int32, GrupID));

                oVeriKatmani.VeriGetir(ds, "SELECT * FROM GrupMenu WHERE GrupID = " + PrmSgn + "GrupID", pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.GrupMenu.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<bool> GrupMenuKaydet(GrupMenuDataSet dsGrupMenu)
        {
            FonksiyonSonuc<Boolean> Sonuc = new FonksiyonSonuc<Boolean>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsGrupMenu);
                Sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                Sonuc.Sonuc = false;
                Sonuc.ExMesaji = ex.Message;
                Sonuc.Hata = dsGrupMenu.GrupMenu.TableName + " kaydedilemedi.";
                Sonuc.HataKod = "70001";
            }
            return Sonuc;
        }

        public FonksiyonSonuc<YetkiDataSet> GrupYetkileriGetir(int GrupID)
        {
            FonksiyonSonuc<YetkiDataSet> sonuc = new FonksiyonSonuc<YetkiDataSet>();
            YetkiDataSet ds = new YetkiDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();

                pParams.Add(oVeriKatmani.CreateParameter("GrupID", DbType.Int32, GrupID));

                oVeriKatmani.VeriGetir(ds, "SELECT * FROM Yetki WHERE Silindi=0 AND YetkiID IN (SELECT YetkiID FROM GrupYetki WHERE GrupID = " + PrmSgn + "GrupID)", pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Yetki.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<MenuDataSet> GrupMenuleriGetir(int GrupID)
        {
            FonksiyonSonuc<MenuDataSet> sonuc = new FonksiyonSonuc<MenuDataSet>();
            MenuDataSet ds = new MenuDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("GrupID", DbType.Int32, GrupID));
                pParams.Add(oVeriKatmani.CreateParameter("Silindi", DbType.Boolean, false));

                oVeriKatmani.VeriGetir(ds, "SELECT * FROM Menu WHERE MenuID IN (SELECT MenuID FROM GrupMenu WHERE GrupID = " + PrmSgn + "GrupID) AND Silindi=" + PrmSgn + "Silindi", pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Menu.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullaniciGrupDataSet> KullaniciGrupGetirbyGrupID(int GrupID)
        {
            FonksiyonSonuc<KullaniciGrupDataSet> sonuc = new FonksiyonSonuc<KullaniciGrupDataSet>();
            KullaniciGrupDataSet ds = new KullaniciGrupDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("GrupID", DbType.Int32, GrupID));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT * FROM KullaniciGrup KG ");
                sb.Append(" WHERE KG.GrupID=" + PrmSgn + "GrupID ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanici okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<bool> KullaniciGrupKaydet(KullaniciGrupDataSet dsKullaniciGrup)
        {
            FonksiyonSonuc<Boolean> Sonuc = new FonksiyonSonuc<Boolean>();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                oVeriKatmani.TopluVeriIsleme(dsKullaniciGrup);
                Sonuc.Sonuc = true;
            }
            catch (Exception ex)
            {
                Sonuc.Sonuc = false;
                Sonuc.ExMesaji = ex.Message;
                Sonuc.Hata = dsKullaniciGrup.KullaniciGrup.TableName + " kaydedilemedi.";
                Sonuc.HataKod = "70001";
            }
            return Sonuc;
        }

        public FonksiyonSonuc<KullaniciDataSet> GrubaEklenmemisKullaniciGetirByBirimID(int BirimID, int GrupID)
        {
            FonksiyonSonuc<KullaniciDataSet> sonuc = new FonksiyonSonuc<KullaniciDataSet>();
            KullaniciDataSet ds = new KullaniciDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("BirimID", DbType.Int32, BirimID));
                pParams.Add(oVeriKatmani.CreateParameter("GrupID", DbType.Int32, GrupID));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT Kullanici.*, KIMLIK.ADI+' '+KIMLIK.SOYADI as ADSOYAD ");
                sb.Append(" FROM Kullanici ");
                sb.Append("      INNER JOIN KIMLIK ON Kullanici.KullaniciID=KIMLIK.KullaniciID ");
                sb.Append("      INNER JOIN KADRO ON KIMLIK.KullaniciID=KADRO.KullaniciID");
                sb.Append(" WHERE KADRO.BIRIMID=" + PrmSgn + "BirimID");
                sb.Append("       AND Kullanici.KullaniciID NOT IN (SELECT KullaniciID ");
                sb.Append("                                        FROM KullaniciGrup KG ");
                sb.Append("                                        where KG.GrupID=" + PrmSgn + "GrupID ) ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanici okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullaniciDataSet> GrubaEklenmisKullaniciGetir(int GrupID)
        {
            FonksiyonSonuc<KullaniciDataSet> sonuc = new FonksiyonSonuc<KullaniciDataSet>();
            KullaniciDataSet ds = new KullaniciDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("GrupID", DbType.Int32, GrupID));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT Kullanici.*, KIMLIK.ADI+' '+KIMLIK.SOYADI as ADSOYAD ");
                sb.Append(" FROM Kullanici ");
                sb.Append("      INNER JOIN KIMLIK ON Kullanici.KullaniciID=KIMLIK.KullaniciID ");
                sb.Append(" WHERE Kullanici.KullaniciID IN (SELECT KullaniciID FROM KullaniciGrup KG ");
                sb.Append("                                        where KG.GrupID=" + PrmSgn + "GrupID ) ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanici okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullaniciGrupDataSet> KullaniciGrupYetkilileriGetir(int KullaniciID)
        {
            FonksiyonSonuc<KullaniciGrupDataSet> sonuc = new FonksiyonSonuc<KullaniciGrupDataSet>();
            KullaniciGrupDataSet ds = new KullaniciGrupDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));

                StringBuilder sb = new StringBuilder();

                sb.Append(" SELECT KG.*,G.GrupAdi ");
                sb.Append(" FROM KullaniciGrup KG ");
                sb.Append("             INNER JOIN Grup G ON KG.GrupID=G.GrupID ");
                sb.Append(" WHERE ");
                sb.Append("         KG.KullaniciID=" + PrmSgn + "KullaniciID ");
                sb.Append(" ORDER BY G.GrupAdi");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı Grupları Getirilirken Hata Oluştu.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<GrupDataSet> KullaniciGrupYetkisizleriGetir(int KullaniciID)
        {
            FonksiyonSonuc<GrupDataSet> sonuc = new FonksiyonSonuc<GrupDataSet>();
            GrupDataSet ds = new GrupDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));

                StringBuilder sb = new StringBuilder();

                sb.Append(" SELECT * ");
                sb.Append(" FROM Grup G ");
                sb.Append(" WHERE G.GrupID NOT IN ");
                sb.Append("            ( SELECT GrupID ");
                sb.Append("              FROM KullaniciGrup ");
                sb.Append("              WHERE KullaniciID=" + PrmSgn + "KullaniciID ) ");

                sb.Append(" ORDER BY G.GrupAdi");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı Grupları Getirilirken Hata Oluştu.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<bool> KullaniciGrubaYetkiliMi(int KullaniciID, int GrupID)
        {
            FonksiyonSonuc<bool> sonuc = new FonksiyonSonuc<bool>();
            KullaniciGrupDataSet ds = new KullaniciGrupDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));
                pParams.Add(oVeriKatmani.CreateParameter("GrupID", DbType.Int32, GrupID));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT KG.* ");
                sb.Append(" FROM KullaniciGrup KG ");
                sb.Append(" WHERE ");
                sb.Append("         KG.KullaniciID=" + PrmSgn + "KullaniciID AND KG.GrupID=" + PrmSgn + "GrupID");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);

                sonuc.Sonuc = ds.KullaniciGrup.Rows.Count > 0;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı Grupları Getirilirken Hata Oluştu.";
                sonuc.HataKod = "70001";
            }
            return sonuc;

        }

        #endregion

        public FonksiyonSonuc<MenuDataSet> KullaniciMenuleriGetir(int KullaniciID)
        {
            FonksiyonSonuc<MenuDataSet> sonuc = new FonksiyonSonuc<MenuDataSet>();
            MenuDataSet ds = new MenuDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));
                pParams.Add(oVeriKatmani.CreateParameter("Silindi", DbType.Boolean, false));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT *   ");
                sb.Append(" FROM Menu M   ");
                sb.Append(" WHERE (M.MenuID IN ( SELECT DISTINCT GM.MenuID   ");
                sb.Append("                     FROM GrupMenu GM  ");
                sb.Append("                             INNER JOIN KullaniciGrup KG ON GM.GrupID=KG.GrupID  ");
                sb.Append("                     WHERE KG.KullaniciID=" + PrmSgn + "KullaniciID) ");
                sb.Append("       OR M.MenuID IN ( SELECT DISTINCT KM.MenuID ");
                sb.Append("                        FROM KullaniciMenu KM ");
                sb.Append("                        WHERE KM.KullaniciID=" + PrmSgn + "KullaniciID )) ");
                sb.Append(" AND M.Silindi= " + PrmSgn + "Silindi ");

                ds.EnforceConstraints = false;
                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Menu.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<YetkiDataSet> KullaniciYetkileriGetir(int KullaniciID)
        {
            FonksiyonSonuc<YetkiDataSet> sonuc = new FonksiyonSonuc<YetkiDataSet>();
            YetkiDataSet ds = new YetkiDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT *  ");
                sb.Append(" FROM Yetki  ");
                sb.Append(" WHERE (YetkiID IN( ");
                sb.Append("                 SELECT DISTINCT GY.YetkiID  ");
                sb.Append("                 FROM GrupYetki GY ");
                sb.Append("                         INNER JOIN KullaniciGrup KG ON GY.GrupID=KG.GrupID ");
                sb.Append("                 WHERE  KG.KullaniciID=" + PrmSgn + "KullaniciID ) ");
                sb.Append("       OR YetkiID IN ( ");
                sb.Append("                 SELECT DISTINCT KY.YetkiID  ");
                sb.Append("                 FROM KullaniciYetki KY  ");
                sb.Append("                 WHERE  KY.KullaniciID=" + PrmSgn + "KullaniciID )) ");
                sb.Append("      AND Yetki.Silindi=0 ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Yetki.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<MenuDataSet> SadeceKullaniciMenuGetir(int KullaniciID)
        {
            FonksiyonSonuc<MenuDataSet> sonuc = new FonksiyonSonuc<MenuDataSet>();
            MenuDataSet ds = new MenuDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));
                pParams.Add(oVeriKatmani.CreateParameter("Silindi", DbType.Boolean, false));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT *   ");
                sb.Append(" FROM Menu M   ");
                sb.Append(" WHERE M.MenuID IN ( SELECT DISTINCT KM.MenuID ");
                sb.Append("                        FROM KullaniciMenu KM ");
                sb.Append("                        WHERE KM.KullaniciID=" + PrmSgn + "KullaniciID ) ");
                sb.Append(" AND M.Silindi= " + PrmSgn + "Silindi ");


                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Menu.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullaniciDataSet> GirisKontrol(string KullaniciAdi)
        {
            FonksiyonSonuc<KullaniciDataSet> sonuc = new FonksiyonSonuc<KullaniciDataSet>();
            KullaniciDataSet ds = new KullaniciDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("KullaniciAdi", DbType.String, KullaniciAdi));

                oVeriKatmani.VeriGetir(ds, "SELECT Kullanici.* FROM Kullanici WHERE KullaniciAdi = " + PrmSgn + "KullaniciAdi", lParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı tablosu okunamadı.";
                Tipler.Siniflar.LogAraci.EventLogYaz(ex.Message + "<br>" + ex.StackTrace, System.Diagnostics.EventLogEntryType.Error);
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullaniciDataSet> TCGirisKontrol(string TCKimlikNo)
        {
            FonksiyonSonuc<KullaniciDataSet> sonuc = new FonksiyonSonuc<KullaniciDataSet>();
            KullaniciDataSet ds = new KullaniciDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("TCKimlikNo", DbType.String, TCKimlikNo));

                oVeriKatmani.VeriGetir(ds, "SELECT Kullanici.* FROM Kullanici WHERE TCKimlikNo = " + PrmSgn + "TCKimlikNo", lParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı tablosu okunamadı.";
                Tipler.Siniflar.LogAraci.EventLogYaz(ex.Message + "<br>" + ex.StackTrace, System.Diagnostics.EventLogEntryType.Error);
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullaniciDataSet> KullaniciGetirYoksaKaydet(string KullaniciAdi, string Sifre)
        {
            FonksiyonSonuc<KullaniciDataSet> sonuc = new FonksiyonSonuc<KullaniciDataSet>();
            KullaniciDataSet ds = new KullaniciDataSet();
            try
            {

                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("KullaniciAdi", DbType.String, KullaniciAdi));

                oVeriKatmani.VeriGetir(ds, "SELECT Kullanici.*, KIMLIK.ADI, KIMLIK.SOYADI FROM Kullanici INNER JOIN KIMLIK ON Kullanici.KullaniciID = KIMLIK.KullaniciID WHERE KullaniciAdi = " + PrmSgn + "KullaniciAdi", lParams);
                if (ds.Kullanici.Rows.Count == 0)
                {

                }
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı tablosu okunamadı.";
                Tipler.Siniflar.LogAraci.EventLogYaz(ex.Message + "<br>" + ex.StackTrace, System.Diagnostics.EventLogEntryType.Error);
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullaniciDataSet> KullanicilariGetirByLisansSahibi(int KullaniciID)
        {
            FonksiyonSonuc<KullaniciDataSet> sonuc = new FonksiyonSonuc<KullaniciDataSet>();
            KullaniciDataSet ds = new KullaniciDataSet();
            try
            {

                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.String, KullaniciID));

                oVeriKatmani.VeriGetir(ds, "SELECT *,Adi+' '+Soyadi as ISIM FROM Kullanici WHERE LisansSahibiKullaniciID = " + PrmSgn + "KullaniciID", lParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı tablosu okunamadı.";
                Tipler.Siniflar.LogAraci.EventLogYaz(ex.Message + "<br>" + ex.StackTrace, System.Diagnostics.EventLogEntryType.Error);
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullaniciDataSet> KullanciGetirByEposta(string Eposta)
        {
            FonksiyonSonuc<KullaniciDataSet> sonuc = new FonksiyonSonuc<KullaniciDataSet>();
            KullaniciDataSet ds = new KullaniciDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("EPOSTA", DbType.String, Eposta));

                StringBuilder sbSQL = new StringBuilder();
                sbSQL.Append(" select K.*, P.ADI+' '+P.SOYADI as ISIM from Kullanici K ");
                sbSQL.Append("      inner join KIMLIK P ON K.KullaniciID=P.KullaniciID ");
                sbSQL.Append(" where K.KullaniciID IN (select I.KullaniciID from IRTIBAT I where I.EPOSTA=" + PrmSgn + "EPOSTA ) ");

                oVeriKatmani.VeriGetir(ds, sbSQL.ToString(), lParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullancıOdemeDataSet> KullaniciOdemeGetirbyKullaniciID(int KullaniciID)
        {
            FonksiyonSonuc<KullancıOdemeDataSet> sonuc = new FonksiyonSonuc<KullancıOdemeDataSet>();
            KullancıOdemeDataSet ds = new KullancıOdemeDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT * ");
                sb.Append(" FROM KullancıOdeme  ");
                if (KullaniciID != -1)
                    sb.Append(" WHERE KullancıOdeme.KullaniciID=" + PrmSgn + "KullaniciID ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), lParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı Ödeme tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullancıOdemeDataSet> KullaniciOdemeGetirbyKullaniciOdemeID(int KullaniciOdemeID)
        {
            FonksiyonSonuc<KullancıOdemeDataSet> sonuc = new FonksiyonSonuc<KullancıOdemeDataSet>();
            KullancıOdemeDataSet ds = new KullancıOdemeDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("KullancıOdemeID", DbType.Int32, KullaniciOdemeID));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT * ");
                sb.Append(" FROM KullancıOdeme ");
                if (KullaniciOdemeID != -1)
                    sb.Append(" WHERE KullancıOdeme.KullancıOdemeID=" + PrmSgn + "KullancıOdemeID ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), lParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı Ödeme tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<KullancıOdemeDataSet> KullaniciSonOdemeGetirbyKullaniciID(int KullaniciID)
        {
            FonksiyonSonuc<KullancıOdemeDataSet> sonuc = new FonksiyonSonuc<KullancıOdemeDataSet>();
            KullancıOdemeDataSet ds = new KullancıOdemeDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));

                StringBuilder sb = new StringBuilder();

                sb.Append(" SELECT TOP 1 * ");
                sb.Append(" FROM KullancıOdeme  ");
                sb.Append(" WHERE KullancıOdeme.KullaniciID=" + PrmSgn + "KullaniciID ");
                sb.Append(" ORDER BY OdemeTarihi DESC");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), lParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı Ödeme tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<int> KullaniciSonOdemeIDGetirbyKullaniciID(int KullaniciID)
        {
            FonksiyonSonuc<int> sonuc = new FonksiyonSonuc<int>();
            KullancıOdemeDataSet ds = new KullancıOdemeDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));

                StringBuilder sb = new StringBuilder();

                sb.Append(" SELECT TOP 1 * ");
                sb.Append(" FROM KullancıOdeme  ");
                sb.Append(" WHERE KullaniciID=" + PrmSgn + "KullaniciID ");
                sb.Append(" ORDER BY OdemeTarihi DESC");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), lParams);
                //TODO Burayı kontrol edelim içime sinmedi.
                if (ds.KullancıOdeme.Rows.Count > 0)
                    sonuc.Sonuc = Convert.ToInt32(ds.KullancıOdeme.Rows[0]["KullancıOdemeID"].ToString());// NewKullancıOdemeRow().KullancıOdemeID;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı Ödeme tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<Decimal> KullaniciOdemeToplamGetirbyKullaniciID(int KullaniciID)
        {
            FonksiyonSonuc<Decimal> sonuc = new FonksiyonSonuc<Decimal>();
            KullancıOdemeDataSet ds = new KullancıOdemeDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("KullaniciID", DbType.Int32, KullaniciID));

                StringBuilder sb = new StringBuilder();

                sb.Append(" SELECT SUM(Ucret) as Ucret ");
                sb.Append(" FROM KullancıOdeme ");
                sb.Append(" WHERE KullancıOdeme.KullaniciID=" + PrmSgn + "KullaniciID ");

                //oVeriKatmani.TekDegerGetir(sb.ToString(), lParams);
                sonuc.Sonuc = Convert.ToDecimal(oVeriKatmani.TekDegerGetir(sb.ToString(), lParams));
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı Ödeme tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<IlKatsayiDataSet> IlKatSayilariniGetir()
        {
            FonksiyonSonuc<IlKatsayiDataSet> sonuc = new FonksiyonSonuc<IlKatsayiDataSet>();
            IlKatsayiDataSet ds = new IlKatsayiDataSet();

            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                StringBuilder sb = new StringBuilder();


                sb.Append("SELECT ik.IlKaysayiID, ik.IlID, ik.Katsayi, ik.BaslamaTarihi, ");
                sb.Append("ik.BitisTarihi, il.IlAdi FROM IlKatsayi ik ");
                sb.Append(" INNER JOIN IlPrm il ON ik.IlID = il.IlID ORDER BY ik.IlID");

                oVeriKatmani.VeriGetir(ds, sb.ToString());
                //oVeriKatmani.VeriGetir(ds, "SELECT IlAdi from IlPrm ORDER BY IlID");
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "IlKatsayı tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<IlKatsayiDataSet> IlKatSayilariniGetir(DateTime BaslamaTarihi, DateTime BitisTarihi)
        {
            FonksiyonSonuc<IlKatsayiDataSet> sonuc = new FonksiyonSonuc<IlKatsayiDataSet>();
            IlKatsayiDataSet ds = new IlKatsayiDataSet();

            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                StringBuilder sb = new StringBuilder();

                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("BaslamaTarihi", DbType.DateTime, BaslamaTarihi));
                lParams.Add(oVeriKatmani.CreateParameter("BitisTarihi", DbType.DateTime, BitisTarihi));

                sb.Append(" SELECT ik.IlKaysayiID, ik.IlID, ik.Katsayi, ik.BaslamaTarihi,");
                sb.Append(" ik.BitisTarihi, il.IlAdi FROM IlKatsayi ik");
                sb.Append(" INNER JOIN IlPrm il ON ik.IlID = il.IlID");
                sb.Append(" WHERE ((ik.BitisTarihi IS NULL AND ik.BaslamaTarihi < " + PrmSgn + "BitisTarihi");
                sb.Append(" ) OR ");
                sb.Append(" (ik.BitisTarihi IS NOT NULL AND ");
                sb.Append(" (( ik.BaslamaTarihi BETWEEN " + PrmSgn + "BaslamaTarihi");
                sb.Append(" AND " + PrmSgn + "BitisTarihi");
                sb.Append(" )OR (ik.BitisTarihi >= " + PrmSgn + "BitisTarihi");
                sb.Append(" )))) ORDER BY ik.IlID ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), lParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Dış güçlerin oyunu nedeniyle IlKatsayı tablosu okunamadı gençler dağılın.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<IlKatsayiDataSet> GecerliIlKatSayilariniGetir()
        {
            FonksiyonSonuc<IlKatsayiDataSet> sonuc = new FonksiyonSonuc<IlKatsayiDataSet>();
            IlKatsayiDataSet ds = new IlKatsayiDataSet();

            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                StringBuilder sb = new StringBuilder();

                sb.Append(" SELECT ik.IlKaysayiID, ik.IlID, ik.Katsayi, ik.BaslamaTarihi,");
                sb.Append(" ik.BitisTarihi, il.IlAdi FROM IlKatsayi ik");
                sb.Append(" INNER JOIN IlPrm il ON ik.IlID = il.IlID");
                sb.Append(" WHERE ik.BitisTarihi IS NULL");
                sb.Append(" ORDER BY ik.IlID ");
                oVeriKatmani.VeriGetir(ds, sb.ToString());
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "IlKatsayı tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }
        public FonksiyonSonuc<String> IlAdiGetirById(byte id)
        {
            FonksiyonSonuc<String> sonuc = new FonksiyonSonuc<String>();
            IlKatsayiDataSet ds = new IlKatsayiDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("IlID", DbType.Int32, IlID));

                StringBuilder sb = new StringBuilder();

                sb.Append(" SELECT IlAdi ");
                sb.Append(" FROM IlPrm  ");
                sb.Append(" WHERE IlID= " + PrmSgn + "IlID ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), lParams);
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "IlPrm tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<IlPrmDataSet> IlAdlariniGetir()
        {
            FonksiyonSonuc<IlPrmDataSet> sonuc = new FonksiyonSonuc<IlPrmDataSet>();
            IlPrmDataSet ds = new IlPrmDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();

                StringBuilder sb = new StringBuilder();

                sb.Append(" SELECT * ");
                sb.Append(" FROM IlPrm ");

                oVeriKatmani.VeriGetir(ds, sb.ToString());
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "IlPrm tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }


        public int OncekiIlKatsayilariBitir(DateTime BitisTarihi)
        {
            int guncellenen = 0;
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("BitisTarihi", DbType.DateTime, BitisTarihi));
                StringBuilder sb = new StringBuilder();
                sb.Append(" UPDATE IlKatsayi");
                sb.Append(" SET BitisTarihi = " + PrmSgn + "BitisTarihi");
                sb.Append(" WHERE BitisTarihi IS NULL ");

                guncellenen = oVeriKatmani.SQLKomutCalistir(sb.ToString(), lParams);
            }
            catch (Exception ex)
            {

            }
            return guncellenen;
        }

        public FonksiyonSonuc<MusteriDataSet> MusterileriGetirByLisansSahibi(int LisansSahibiKullaniciID)
        {
            FonksiyonSonuc<MusteriDataSet> sonuc = new FonksiyonSonuc<MusteriDataSet>();
            MusteriDataSet ds = new MusteriDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();
                List<IDbDataParameter> lParams = new List<IDbDataParameter>();
                lParams.Add(oVeriKatmani.CreateParameter("LisansSahibiKullaniciID", DbType.Int32, LisansSahibiKullaniciID));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT * ");
                sb.Append(" FROM Musteri  ");
                if (LisansSahibiKullaniciID != -1)
                    sb.Append(" WHERE Musteri.LisansSahibiKullaniciID = " + PrmSgn + "LisansSahibiKullaniciID ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), lParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = "Kullanıcı Ödeme tablosu okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

        public FonksiyonSonuc<RaporDataSet> KullaniciRaporlariGetir(int PersonelID)
        {
            FonksiyonSonuc<RaporDataSet> sonuc = new FonksiyonSonuc<RaporDataSet>();
            RaporDataSet ds = new RaporDataSet();
            try
            {
                VeriArabirim oVeriKatmani = VeriServis.VeriTabaniObjesiGetir();

                List<IDbDataParameter> pParams = new List<IDbDataParameter>();
                pParams.Add(oVeriKatmani.CreateParameter("PERSONELID", DbType.Int32, PersonelID));

                StringBuilder sb = new StringBuilder();
                sb.Append(" SELECT *   ");
                sb.Append(" FROM Rapor ");
                sb.Append(" WHERE Silindi = 0 ");
                sb.Append(" AND Visible=1 ");
                sb.Append(" AND RaporID IN (SELECT  RaporID  ");
                sb.Append("                   FROM  GrupRapor GR ");
                sb.Append("                       INNER JOIN KullaniciGrup KG ON GR.GrupID = KG.GrupID ");
                sb.Append("                       INNER JOIN Grup G ON G.GrupID = KG.GrupID ");
                sb.Append("                   WHERE KG.PersonelID = " + PrmSgn + "PERSONELID) ");
                sb.Append(" ORDER BY RaporTuru,Sira ");

                oVeriKatmani.VeriGetir(ds, sb.ToString(), pParams);
                sonuc.Sonuc = ds;
            }
            catch (Exception ex)
            {
                sonuc.Ex = ex;
                sonuc.Hata = ds.Rapor.TableName + " okunamadı.";
                sonuc.HataKod = "70001";
            }
            return sonuc;
        }

    }


}